// typeof 可以正确识别：Undefined、Boolean、Number、String、Symbol、Function 等类型的数据，但是对于其他的都会认为是 object，比如 Null、Date 等，所以通过 typeof 来判断数据类型会不准确。但是可以使用 Object.prototype.toString 实现。
function myTypeOf (obj) {
  // return Object.prototype.toString.call(obj) // [object Object]
  // [object Null]
  // [object Array]
  return Object.prototype.toString.call(obj).slice(8, -1) // 表示到最后一个 不包括这个最后一个
}

console.log(myTypeOf({ a: '123' }));
console.log(myTypeOf(null));
console.log(myTypeOf([1, 2, 3]));